package modelo;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedList;



import android.content.Context;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;


// classe que tem as listas, strings e estruturas para ir buscar dados
public class GestaoAplicacao implements Serializable {
	
	private LinkedList<Utilizador> listasUtilizadores; //lista da propria classe
	private LinkedList<Registo> listasRegisto;
	private String[] Auxiliar;
	
	//construtor
	public GestaoAplicacao(){ 
		listasUtilizadores = new LinkedList<Utilizador>();
		listasRegisto = new LinkedList<Registo>();
	}
	
	//GET'S
	public LinkedList<Utilizador> getListasUtilizadores() { //devolve uma lista de utilizadores
		return listasUtilizadores;
	}
	
	public LinkedList<Registo> getListasRegisto() {
		return listasRegisto;
	}

	public ArrayList<String> getListasUtilizadoresNomes() { //devolve uma lista so de nomes
	ArrayList<String> listaAux= new ArrayList<String>();	
		for(Utilizador u : listasUtilizadores)
		{
			listaAux.add(u.getNome());
		}
		
		return listaAux;
	}


//Metodos
	
	public void lerUtilizadoresBD(Context c){
		SQLiteManage sqlBD = new SQLiteManage(c);
		sqlBD.open();
		listasUtilizadores=sqlBD.listaUtilNome();
		sqlBD.close();

	}
	

	public void lerRegistosBD(int idU, Context c){
		SQLiteManage sqlBD = new SQLiteManage(c);
		sqlBD.open();
		listasRegisto = sqlBD.listaReg(idU);
		sqlBD.close();
	}
	
	
	public void gravarUtilizadores(String nome, String dtNasc, String sexo, Context c)
	{
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		sqlBD.createEntry(nome, dtNasc, sexo);
		sqlBD.close();
		} catch (Exception ex){
			
		}
	}
	
	public void editarUtilizadores(int idUtilizador, String nome, String dtNasc, String sexo, Context c)
	{
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		sqlBD.editUtilizadores(idUtilizador, nome, dtNasc, sexo);
		sqlBD.close();
		} catch (Exception ex){
			
		}
	}
	
	public void editarRegisto(int idRegisto ,int sis, int dia, int pul, String com, String sitio, String posicao, String estado, String data, String hora, String men, Context c)
	{
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		sqlBD.editRegisto(idRegisto, sis, dia, pul, com, sitio, posicao, estado, data, hora, men);
		sqlBD.close();
		} catch (Exception ex){
			
		}
	}
	
	public void gravarRegisto(int sis, int dia, int pul, String com, String sit, String pos, String est, String dat, String hora, int idUti, String men, Context c)
	{
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		sqlBD.createEntryRegisto(sis, dia, pul, com, sit, pos, est, dat, hora, idUti, men);
		sqlBD.close();
		} catch (Exception ex){
			
		}
	}
	
	public int obterID (String nome){
		
		 int id_uti = 0;
		   for(Utilizador u : listasUtilizadores)
		   {
			   if(u.getNome().equals(nome))
			   {
				  return id_uti = u.getIdUtilizador();
			   }
			   
		   }
		return (Integer) null;
	}
	
	public Utilizador obterUtilizador(int idU, Context c)
	{
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		Utilizador u = sqlBD.selectID(idU);
		sqlBD.close();
		return u;
		} catch (Exception ex){
			
		}
		return null;
	}
	
	public Registo obterRegisto(int idR, Context c){
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		Registo r = sqlBD.listaRegisto(idR);
		sqlBD.close();
		return r;
		} catch (Exception ex){
			
		}
		return null;

	}	
	
	public void eliminarRegisto(int reg, Context c)
	{
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		sqlBD.apagarRegisto(reg);
		sqlBD.close();
		} catch (Exception ex){
			
		}
	}
	
	public void eliminarUtilizador(int u, Context c)
	{
		
		SQLiteManage sqlBD = new SQLiteManage(c);
		try
		{
		sqlBD.open();
		sqlBD.apagarUtilizador(u);
		sqlBD.close();
		} catch (Exception ex){
			
		}
	}

}
